package swagenda.utils;

import java.awt.Container;
import java.lang.reflect.Method;

import javax.swing.JComponent;
import javax.swing.JFrame;

import org.apache.log4j.Logger;

public class Utils
{
	public static JFrame getParentFrame(JComponent c)
	{
		Container parent = c.getParent();
		while (!(parent instanceof JFrame))
		{
			parent = parent.getParent();
		}
		return (JFrame) parent;
	}

	@SuppressWarnings("unchecked")
	public static void openURL(String url, Logger logger)
	{
		String osName = System.getProperty("os.name");
		try
		{
			if (osName.startsWith("Mac OS"))
			{
				Class fileMgr = Class.forName("com.apple.eio.FileManager");
				Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] { String.class });
				openURL.invoke(null, new Object[]
				{ url });
			} else if (osName.startsWith("Windows"))
				Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
			else
			{ // assume Unix or Linux
				String[] browsers =
				{ "firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" };
				String browser = null;
				for (int count = 0; count < browsers.length && browser == null; count++)
					if (Runtime.getRuntime().exec(new String[]
					{ "which", browsers[count] }).waitFor() == 0)
						browser = browsers[count];
				if (browser == null)
					throw new Exception("Could not find web browser");
				else
					Runtime.getRuntime().exec(new String[]
					{ browser, url });
			}
		} catch (Exception e)
		{
			logger.error(":\n" + e.getLocalizedMessage());
		}
	}

}
